/**
 * Copyright© 2003-2019 浙江汇信科技有限公司, All Rights Reserved. <br/>
 * 描述: TODO <br/>
 *
 * @author framework generator
 * @date 2022年02月16日
 * @version 2.0
 */
package com.icinfo.cloud.provider.punish.ucase.casemain.mapper;

import com.icinfo.cloud.provider.punish.ucase.casemain.dto.CaseMainDetailInfoQueryDto;
import com.icinfo.cloud.provider.punish.ucase.casemain.model.CaseMainDetailInfo;
import com.icinfo.cloud.provider.punish.ucase.casemain.vo.CaseMainDetailInfoCommonVo;
import com.icinfo.cloud.provider.punish.ucase.casemain.vo.CaseMainDetailInfoVo;
import com.icinfo.cloud.provider.punish.ucase.caseregister.vo.RepeatCaseInfoVo;
import com.icinfo.framework.common.web.Result;
import com.icinfo.framework.mybatis.mapper.common.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 描述: 案件详情表（宽表）-TRJ case_main_detail_info 对应的Mapper接口.<br>
 *
 * @author framework generator
 * @date 2022年02月16日
 */
public interface CaseMainDetailInfoMapper extends Mapper<CaseMainDetailInfo> {
    /**
     * 【V1.0.0】描述：从案件详情宽表中查询特定字段
     * @author tianrunjia
     * @date 2022-03-02
     * @param queryMap
     * @return
     */
    Map<String, Object> selectSomeDataFromCaseMainDetailInfo(Map<String ,String > queryMap);

    /**
     * 通过发生时间和案由查caseId
     * @author lxj
     * @date  2022/3/5
     * @param  map,
     * @return caseId
     **/
    List<String> selectCaseIdByReasonAndTime(Map<String,Object> map);

    /**
     * 【V1.0.0】描述：获取案件主要详情列表
     *
     * @param queryDto {@link CaseMainDetailInfoQueryDto}
     * @return {@link Result <List<CaseMainDetailInfoVo>} 案件主要详情列表
     * @author xiangyuyu
     * @date 2022-04-14 10:38
     */
    List<CaseMainDetailInfoVo> selectCaseMainDetailList(@Param("queryDto") CaseMainDetailInfoQueryDto queryDto);


    /**
     * 【V1.1.0】描述：获取案件id列表-需要上报的立案信息
     *
     * @return {@link List<String>} 案件id列表
     * @author xiangyuyu
     * @date 2022-02-16 16:02
     */
    List<String> selectCaseIdListShouldReportBasicInfo();

    /**
     * 【V1.5.0】描述：获取案件id列表-需要上报的立案信息-refactor
     *
     * @return {@link List<String>} 案件id列表
     * @author xiangyuyu
     * @date 2022-02-16 16:02
     */
    List<String> selectCaseIdListShouldReportBasicInfoRefactor();

    /**
     * 【V1.2.0】描述：获取案件id列表-需要上报的立案信息
     * @param punishDecideCaseIdList 处罚决定的案件ID列表
     * @return {@link Result <String>} 案件id列表
     * @author mahan
     * @date 2022-10-20 18:52
     */
    List<String> selectReportBasicInfoCaseIdList(@Param("punishDecideCaseIdList") List<String> punishDecideCaseIdList);

    /**
     * 【V1.1.0】描述：获取立案信息上报成功的所有案件id
     *
     * @return {@link List<String>} 案件id列表
     * @author xiangyuyu
     * @date 2022-02-16 16:02
     */
    List<String> selectReReportBaseCaseIdList();

    /**
     * 【V1.1.0】描述：获取决定信息上报成功的所有案件id
     *
     * @return {@link List<String>} 案件id列表
     * @author xiangyuyu
     * @date 2022-02-16 16:02
     */
    List<String> selectReReportDecisionCaseIdList();

    /**
     * 【V1.1.0】描述：获取案件id列表-需要上报的执行信息
     *
     * @return {@link List<String>} 案件id列表
     * @author xiangyuyu
     * @date 2022-02-16 16:02
     */
    List<String> selectCaseIdListShouldReportExecuteInfo();

    /**
     * 【V1.5.0】描述：获取案件id列表-需要上报的执行信息-refactor
     *
     * @return {@link List<String>} 案件id列表
     * @author xiangyuyu
     * @date 2022-02-16 16:02
     */
    List<String> selectCaseIdListShouldReportExecuteInfoRefactor();

    /**
     * 【V1.1.0】描述：获取案件id列表-需要上报的结案信息
     *
     * @return {@link List<String>} 案件id列表
     * @author xiangyuyu
     * @date 2022-02-16 16:02
     */
    List<String> selectCaseIdListShouldReportCaseOverInfo();
    /**
     * 【V1.5.0】描述：获取案件id列表-需要上报的结案信息-refactor
     *
     * @return {@link List<String>} 案件id列表
     * @author xiangyuyu
     * @date 2022-02-16 16:02
     */
    List<String> selectCaseIdListShouldReportCaseOverInfoRefactor();

    /**
     * 描述：根据当事人、案由和案发时间查询重复立案列表
     *
     * @param map 地图
     * @return {@link List< RepeatCaseInfoVo > }
     * @author shishengyao
     * @date 2022/07/11
     */
    List<RepeatCaseInfoVo> selectRepeatCaseByReasonsAndHappenTime(Map<String,Object> map);


    /**
     * 描述：根据案件id查询案件主要信息
     *
     * @param caseId 用例id
     * @return {@link CaseMainDetailInfoCommonVo }
     * @author shishengyaoselectCaseMainDetailInfoCommonVoByCaseId
     * @date 2022/08/28
     */
    CaseMainDetailInfoCommonVo selectCaseMainDetailInfoCommonVoByCaseId(@Param("caseId") String caseId,@Param("deptCode") String deptCode);
    /**
     * 描述：根据案件id查询最新案件主要信息
     * @param cerNo  身份证号码
     * @return {@link CaseMainDetailInfo }
     * @author  wangfawei
     * @date 2022/08/28
     */
    List<CaseMainDetailInfo> getCaseMainDetailInfoListByCaseIdAndOrder(@Param("cerNo") String cerNo);

    /**
     *
     * 根据案件id获取处理结论
     * @param caseId  案件id
     * @return {@link String }
     * @author  ch
     * @date 2023/02/13
     */
    String getHandleConclusionByCaseId(@Param("caseId") String caseId);

    /**
     *
     * 根据案件id获取处理结论
     * @param caseId  案件id
     * @return {@link String }
     * @author  ch
     * @date 2023/02/13
     */
    CaseMainDetailInfo getRsAndYjReason(@Param("caseId") String caseId);
}
